<?php
namespace app\admin\model;
use think\Model;
use think\Db;

/**
 * 后台权限模型
 * @package app\admin\model
 */
class Role extends Model
{
    // 设置当前模型对应的完整数据表名称
    protected $table = 'adm_role';

    protected $pk = 'role_id';

    //获取所有角色
    public function getRole()
    {
    	return $this::select()->toArray();
    }

    //更新数据
    public function upd($data)
    {
    	if(!empty($data['role_auth_list'])){
    		$data = $this->arrayToString($data);
    	}else{
    		$data['role_auth_list'] = '';
    	}
    	return $this::update($data);
    }

    //添加角色
    public function addRole($data)
    {
        if(!empty($data['role_auth_list'])){
            $data = $this->arrayToString($data);
        }

        return $this::isUpdate(false)->save($data);
    }

    /**
     * 将用户添加的角色对应的权限数组转换为字符串
     * @param  array &$data   角色权限数组
     */
    public function arrayToString($data)
    {
        $data['role_auth_list'] = implode(',', $data['role_auth_list']); // [12, 23] --->12,23

        return $data;
    }

    /**
     * 将权限菜单显示层级关系
     * @param  array &$arr   权限层级数组
     */
    public function createMenu($menu, $name = 'child', $pid = 0, $level = 0 )
    {
        $arr = array();
        foreach($menu as $v)
        {
            if($v['auth_pid'] == $pid)
            {
                $v['level'] = $level ;
                $v[$name] = $this->createMenu($menu, $name, $v['auth_id'], $level+1);
                $arr[] = $v;
            }
        }
        return $arr;
    }

    //获取单条角色信息
    public function getOneRole($id)
    {
        $role_id['role_id'] = $id;
        return json_encode(($this::find($role_id)->toArray()),JSON_UNESCAPED_UNICODE);
    }

}